Basic libraries for dealing with data:
library(plotly) # interactive graphs
library(RColorBrewer) # make new color sets
library(tidyverse) # easy manipulation of dataframes
library(DT) # generate interactive html tables
library(rvest) # scrap web pages
Some libraries for better handling Rmarkdown:
library(DT) # iteractive datatables
Lê dados de contas do governo
despesas.funcao.2018 <- read_csv2(
join.path(data.dir, "tesouro-csv", "2018_Despesas-Funcao-ESTADOS.csv"),
locale=locale(encoding="ISO-8859-15"),
skip=3,
col_types = cols(.default = col_factor(NULL),
"População" = col_number(),
Valor = col_number()))
## Using ',' as decimal and '.' as grouping mark. Use read_delim() for more control.
datatable(despesas.funcao.2018, filter="top")
Lê dados do IDEB 4o-5o anos para cada estado, primeiro direto do HTML:
# leitura direto do HTML
estados45ano.path <- join.path(data.dir, "ideb/estados/4-5-ano/ideb_estados_escolas-publica_4-5ano.html")
estados45ano.tabletag <- "#resultadoDataTable4"
estados45ano.html <- read_html(estados45ano.path) %>%
html_node(estados45ano.tabletag) %>%
html_table() ->
estados45ano.table # retorna um "data_frame()" padrão, depois converteremos para "tibble"
datatable(estados45ano.table, options=list(scrollX=T))
Então, formatamos para ficar mais “tidy”:
OBS: Mais detalhes sobre o tratamento de dados no main.R
# trata colunas de "Ideb Observado"
estados45ano.observado <- estados45ano.table[, colnames(t) %in% c("", "Ideb Observado")]
colnames(estados45ano.observado) <- estados45ano.observado[1,]
estados45ano.observado <- estados45ano.observado[-1,] # elimina a primeira linha
estados45ano.observado <- estados45ano.observado %>%
as.tibble() %>% # converte num formato de tabela mais moderno de tabela
gather("Ano", "Ideb", 2:8) # unifica as colunas de "ano" em uma só
# trata colunas de "Metas"
estados45ano.metas <- estados45ano.table[, colnames(t) %in% c("", "Metas Projetadas")]
colnames(estados45ano.metas) <- estados45ano.metas[1,]
estados45ano.metas <- estados45ano.metas[-1,]
estados45ano.metas <- estados45ano.metas %>%
as.tibble() %>%
gather("Ano", "Meta", 2:9)
# mescla as duas
estados45ano.df <- inner_join(estados45ano.observado, estados45ano.metas, by=c("Estado", "Ano"))
datatable(estados45ano.df, rownames=F, filter="top")
datatable(despesas.funcao.2018,
rownames=F,
filter="top",
options=list(pageLength = 5, scrollX=T))
despesas.funcao.2018 %>%
select(Conta) %>%
unique() %>%
datatable(rownames=F, filter="top")
despesas.funcao.2018 %>%
select(UF, População) %>%
ggplot(aes(x=UF, y=População)) +
geom_bar(stat = "identity")
despesas.funcao.2018 %>%
filter(startsWith(as.character(Conta), "12")) %>%
group_by(UF) %>%
summarise(InvEduc = sum(Valor)) %>%
ggplot(aes(x=UF, y=InvEduc)) +
geom_bar(stat = "identity")